#include"taskQeuen.h"
#include"threadPool.h"
// ./server 192.168.213.128 2222 3
int main(int argc,char*argv[])
{
    //检查参数
    ARGS_CHECK(argc,4);
    int wokerNum = atoi(argv[3]); // 3
    //创建一个消息队列
    //创建一个线程池
    threadPool_t threadPool;
    //初始化线程池
    creatPool(&threadPool,3);
    makeWorker(&threadPool);
    //准备连接客户端
    int sockfd;
    tcpInit(argv[1],argv[2],&sockfd);
    //增加监听
    int epfd = epoll_create(10);
    epollAdd(epfd,sockfd);//将sockfd加入监听
    struct epoll_event readyset[10]; //准备就绪队列不要忘记了
    while(1)
    {
        //就绪个数
        int readyNum = epoll_wait(epfd,readyset,10,-1);
        for(int i =0;i<readyNum;i++)
        {
            if(readyset[i].data.fd == sockfd)
            {
                //客户端就绪
                int netfd = accept(sockfd,NULL,NULL);
                //访问共享数据要加锁
                pthread_mutex_lock(&threadPool.mutex);
                //将netfd放入数据里面
                addTail(&threadPool.taskQeuen,netfd);
                printf("netfd = %d,taskQeuen : %d\n",netfd,threadPool.taskQeuen.length);
                //通知子线程
                //放一个处理一个
                printf("main thread send a task !!!!!\n");
                pthread_cond_signal(&threadPool.cond);
                pthread_mutex_unlock(&threadPool.mutex);
            }
        }
    }
    return 0;
}